package com.indra.bbva.pe.monitor.in.dao.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.stereotype.Repository;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.indra.bbva.pe.monitor.in.dao.iface.MultiTablaDAOIface;
import com.indra.bbva.pe.monitor.in.utils.Util;
import com.stefanini.pe.bbva.bp.in.to.MultiTabla;

@Repository
public class MultiTablaDAOImpl extends SqlMapClientDaoSupport implements MultiTablaDAOIface{
	
	@Autowired
	public MultiTablaDAOImpl(SqlMapClient sqlMapClient) {
		super.setSqlMapClient(sqlMapClient);
	}
	
	public List <MultiTabla> listarMultiTabla(String in_idtabla, String in_iditem) {
		HashMap parametros=new HashMap();
		parametros.put("in_idtabla", in_idtabla);
		parametros.put("in_iditem", in_iditem);
		System.out.println("BPMonitor. sp: sp_cons_pa_multitablac, params "+parametros);
		getSqlMapClientTemplate().queryForList("BP_MULTITABLA.listarMultiTabla",parametros);
		return (List <MultiTabla>)parametros.get("result");
	}

	public List listarTablas() {
		HashMap parametros=new HashMap();
		getSqlMapClientTemplate().queryForList("BP_MULTITABLA.listarTablas",parametros);
		return (List)parametros.get("result");
	}

	public Map<String,Object> insertarMultiTabla(MultiTabla multiTabla) {
		Map<String,Object> parametros=new HashMap<String,Object>();
		try {
			parametros.put("in_idcodigo", multiTabla.getIdTabla());
			parametros.put("in_descripcion", multiTabla.getDescripcion());
			parametros.put("in_codregmodi", multiTabla.getCodRegModi());
			parametros.put("in_fecmodi", multiTabla.getFecModi());
			parametros.put("in_terminalmodi", multiTabla.getTerminalModi());
			parametros.put("in_valor1", multiTabla.getValor1());
			parametros.put("in_compara1", multiTabla.getCompara1());
			parametros.put("in_compara2", multiTabla.getCompara2());
			parametros.put("in_descripcionlarga", multiTabla.getDescripcionLarga());
			parametros.put("in_detalleorden", multiTabla.getDetalleOrden());
			parametros.put("in_indactivo", multiTabla.getIndActivo());			
			getSqlMapClientTemplate().insert("BP_MULTITABLA.insertarMultiTabla",parametros);
			
			parametros.put("result", "ok");			
		} catch (Exception e) {
			e.printStackTrace();
			parametros.put("result", Util.obtenerMensajeError(e));	
		}
		return parametros;
	}

	public Map<String,Object> modificarMultiTabla(MultiTabla multiTabla) {
		Map<String,Object> parametros=new HashMap<String,Object>();
		try {
			parametros.put("in_idcodigo", multiTabla.getIdCodigo());
			parametros.put("in_descripcion", multiTabla.getDescripcion());
			parametros.put("in_codregmodi", multiTabla.getCodRegModi());
			parametros.put("in_fecmodi", multiTabla.getFecModi());
			parametros.put("in_terminalmodi", multiTabla.getTerminalModi());
			parametros.put("in_valor1", multiTabla.getValor1());
			parametros.put("in_compara1", multiTabla.getCompara1());
			parametros.put("in_compara2", multiTabla.getCompara2());
			parametros.put("in_descripcionlarga", multiTabla.getDescripcionLarga());
			parametros.put("in_detalleorden", multiTabla.getDetalleOrden());
			parametros.put("in_indactivo", multiTabla.getIndActivo());			
			getSqlMapClientTemplate().update("BP_MULTITABLA.modificarMultiTabla",parametros);
			
			parametros.put("result", "ok");
		} catch (Exception e) {
			e.printStackTrace();
			parametros.put("result", Util.obtenerMensajeError(e));
		}
		return parametros;
	}

	public List<HashMap> obtenerMultiTablaXID(String idcodigo) {
		HashMap parametros=new HashMap();
		parametros.put("in_idcodigo", idcodigo);	
		getSqlMapClientTemplate().queryForList("BP_MULTITABLA.obtenerMultiTablaXID",parametros);
		return (List)parametros.get("result");		
	}
}
